// function add1(str){
//     return '1' + str;
// }
//
// function add2(str){
//     return '2' + str;
// }
//
// function add3(str){
//     return '3' + str;
// }

function compose(...funcs){
    if(funcs.length === 0) return args => args; //传个'ahhh'返回一个'ahhh'

    if(funcs.length === 1){
        return funcs[0];
    }

    return funcs.reduce((a, b) => (...args) => a(b(...args)));

    // return function(...args){
    //     let result;
    //     for(let i=funcs.length-1;i>=0;i--){
    //         let func = funcs[i];
    //         result = func(i == funcs.length - 1 ? args : result);
    //     }
    // }
}

// let result = compose(add1, add2, add3)('ahhh'); //add3('ahhh')执行后的结果作为参数传入add2,add2执行后的结果又作为参数传入add1
// console.log(result); //123ahhh

export default compose;
